package org.japo.java.swing.igu;

import org.japo.java.swing.listeners.GEA;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.Image;
import java.net.URL;
import javax.swing.ImageIcon;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import org.japo.java.swing.beans.PanelFondo;

public class IGU extends JFrame {

    // Componentes del IGU
    private JCheckBox cbxNegrita;
    private JCheckBox cbxCursiva;
    private JLabel lblPrueba;

    // Valores predeterminados de fuente
    private final String FNT_FAM = "Calibri";
    private final int FNT_EST = Font.PLAIN;
    private final int FNT_TAM = 40;

    // Recurso con la imagen de forndo del panel
    private final String RES_PKG = "/org/japo/java/resources/img";
    private final String RES_IMG  = "fondo.jpg";
    private final String RECURSO = RES_PKG + "/" + RES_IMG;

    // Texto de prueba
    private final String TEXTO = "Érase una vez Java";

    public IGU() {
        iniciarComponentes();
    }

    private void iniciarComponentes() {
        // Panel principal
        JPanel pnlPrincipal = new JPanel();
        pnlPrincipal.setLayout(new GridLayout(2, 1));

        // Tamaños de componentes
        Dimension dimBotones = new Dimension(200, 30);

        // Fuente de la etiqueta
        Font fuente = new Font(FNT_FAM, FNT_EST, FNT_TAM);

        // Gestor de eventos de accion
        GEA gea = new GEA(this);

        // Etiqueta de prueba
        lblPrueba = new JLabel();
        lblPrueba.setFont(fuente);
        lblPrueba.setText(TEXTO);
        lblPrueba.setHorizontalAlignment(JLabel.CENTER);
        pnlPrincipal.add(lblPrueba);

        // Imagen de fondo
        URL urlImagen = getClass().getResource(RECURSO);
        Image i = new ImageIcon(urlImagen).getImage();

        // Panel de control
        JPanel pnlControl = new PanelFondo(i);
        pnlPrincipal.add(pnlControl);

        // Selector de negrita
        cbxNegrita = new JCheckBox("Negrita");
        cbxNegrita.addActionListener(gea);
        cbxNegrita.setPreferredSize(dimBotones);
        cbxNegrita.setOpaque(false);
        pnlControl.add(cbxNegrita);

        // Selector de cursiva
        cbxCursiva = new JCheckBox("Cursiva");
        cbxCursiva.addActionListener(gea);
        cbxCursiva.setPreferredSize(dimBotones);
        cbxCursiva.setOpaque(false);
        pnlControl.add(cbxCursiva);

        // Ventana principal
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setTitle("Selección de estilo");
        setContentPane(pnlPrincipal);
        setResizable(false);
        setSize(400, 210);
        setLocationRelativeTo(null);
    }

    public void procesarEstilo() {
        // Valores niciales
        int negrita = Font.PLAIN;
        int cursiva = Font.PLAIN;

        // Estado de NEGRITA
        if (cbxNegrita.isSelected()) {
            negrita = Font.BOLD;
        }

        // Estado de CURSIVA
        if (cbxCursiva.isSelected()) {
            cursiva = Font.ITALIC;
        }

        // Actualiza estilo
        int estilo = negrita + cursiva;

        // Actualiza fuente
        Font fuente = new Font(FNT_FAM, estilo, FNT_TAM);

        // Aplica fuente
        lblPrueba.setFont(fuente);
    }
}
